Recette n 23 Intgrer la librairie Zbar dans un projet Android
Page 63


public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback
{
   private SurfaceHolder mHolder; 
   private Camera mCamera; 
   private PreviewCallback previewCallback; 
   private AutoFocusCallback autoFocusCallback; 
   
   

   public CameraPreview(Context context, Camera camera,
                        PreviewCallback previewCb,
                        AutoFocusCallback autoFocusCb)
   {
      super(context);
      mCamera = camera;
      previewCallback = previewCb;
      autoFocusCallback = autoFocusCb;

      Camera.Parameters parameters = camera.getParameters();
      for (String focusMode : parameters.getSupportedFocusModes())
      {
         if (focusMode == Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)
         {
            parameters.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
            autoFocusCallback = null;
            break;
         }
      }

      mHolder = getHolder();
      mHolder.addCallback(this);
   }

   public void surfaceCreated(SurfaceHolder holder)
   {
      try
      {
         mCamera.setPreviewDisplay(holder);
      }
      catch (IOException e)
      {
         Log.d("DBG", "Erreur lors de l'activation de l'aperu : " + e.getMessage());
      }
   }

   public void surfaceDestroyed(SurfaceHolder holder)
   {

   }

   public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
   {

      if (mHolder.getSurface() == null)
      {
         return;
      }

      try
      {
         mCamera.stopPreview();
      }
      catch (Exception e)
      {

      }

      try
      {
         mCamera.setDisplayOrientation(180);
         mCamera.setPreviewDisplay(mHolder);
         mCamera.setPreviewCallback(previewCallback);
         mCamera.startPreview();
         mCamera.autoFocus(autoFocusCallback);
      }
      catch (Exception e)
      {
         Log.d("DBG", "Erreur lors de l'activation de l'aperu : " + e.getMessage());
      }
   }
}
